1. Technical Field
This disclosure generally relates to deploying virtual machines to host computer systems, and more specifically relates to deploying virtual CPUs using a hardware multithreading parameter to a host computer system that includes one or more split core processors.
2. Background Art
In a cloud environment, a cloud manager deploys virtual machines to host computer systems to create virtual servers. Typically the cloud manager receives a request that specifies what the virtual machine image requires for system resources, such as memory, disk and CPU. The cloud manager then determines available host computer systems that have the required system resources, selects one of the available host computers systems, and deploys the virtual machine to the selected host computer system.
OpenStack is open-source software for building private and public clouds. In OpenStack, virtual hardware templates called “flavors” specify system resources needed for virtual machines. For example, a flavor in OpenStack can specify size of memory, root disk size, and number of virtual CPUs for a virtual machine. When a virtual machine needs to be deployed, a call is made to the cloud manager with the flavor specifying the needed resources for the virtual machine. The cloud manager then finds one or more host computer systems that have the resources specified in the flavor, and deploys the virtual machine on one of the host computer systems that satisfies the flavor.
Hardware multithreading in a host can complicate the provisioning of virtual machines to a host computer system. In the prior art, if hyperthreading is enabled on the host computer system, the number of hardware threads are considered when selecting a host computer system for a virtual machine and virtual CPUs are allocated to hardware threads without regard to the physical cores. If hyperthreading is not enabled on the host computer system, only physical processor cores are considered when selecting a host computer system for a virtual machine, and virtual CPUs are allocated only to physical processor cores when a VM is provisioned on the selected host computer system. With modern processor architectures such as POWER that include many hardware threads in each core, the result is a very inefficient use of processing resources.
The provisioning of virtual machines can further be complicated when processors have split cores. Split core processors refers to a CPU core that can be split into multiple subcores which may each contain multiple hardware threads and where the subcore appears as a core to the guest operating system. For example, a core capable of split core with 8 hardware threads, may be split into 4 subcores each capable of supporting 2 hardware threads. Split core enablement is dynamic, meaning the splitting can be changed programmatically on the host operating system. Known cloud managers do not treat split core processors any differently than processors that do not have split cores. As a result, known cloud managers cannot realize the advantages of using split core processors when provisioning virtual machines.